


// Vue 项目接口文件 
var express = require('express');
var router = express.Router();
var {comment_model,user_model,anno_model} = require("../utils/model")
var {createToken,checkToken} = require("../utils/token")
var multer = require("multer");

router.get("/test",(req,res)=>{
  res.json({
    code:200,
    msg:"请求成功",
    result:"Vue 项目接口文件  - test - test "
  })
})

// 查
router.get("/comment-list",(req,res)=>{
  comment_model.find({},{})
  .then(result=>{
    res.json({
      code:200,
      msg:"查询成功",
      result
    })
  })
  .catch(err=>{
    res.json({
      code:500,
      msg:"服务器异常",
      err
    })
  })
})

// 添加 
router.post("/comment-add",(req,res)=>{
  var body = req.body;
  comment_model.insertMany(body)
  .then(result=>{
    res.json({
      code:200,
      msg:"添加成功",
      result
    })
  })
  .catch(err=>{
    res.json({
      code:500,
      msg:"服务器异常",
      err
    })
  })
})


// 删除 
router.post("/comment-delete",(req,res)=>{
  var body = req.body;
  comment_model.remove(body)
  .then(result=>{
    res.json({
      code:200,
      msg:"删除成功",
      result
    })
  })
  .catch(err=>{
    res.json({
      code:500,
      msg:"服务器异常",
      err
    })
  })
})

//修改
router.post("/comment-update",(req,res)=>{
  var body = req.body;
  comment_model.updateMany({
    _id:body._id
  },{
    $set:body
  })
  .then(result=>{
    res.json({
      code:200,
      msg:"修改成功",
      result
    })
  })
  .catch(err=>{
    res.json({
      code:500,
      msg:"服务器异常",
      err
    })
  })
})

router.post("/register",(req,res)=>{
    var body = req.body 
    user_model.findOne({
      phone:body.phone
    })
    .then(data=>{
      if(data){
        res.json({
          code:401,
          msg:"账号已经被注册",
          data
        })
      }else{
        body.time = new Date();
        body.role = body.role || 0;  // 注册普通用户
        user_model.insertMany(body)
        .then(result=>{
          res.json({
            code:200,
            msg:"注册成功",
            result
          })
        })
      }
    })
    .catch(err=>{
      res.json({
        code:500,
        msg:"服务器异常",
        err
      })
    })
})

// 登录
router.post("/login",(req,res)=>{
    const body = req.body;
    user_model.findOne({
      $or:[
        { phone:body.phone},
        { username:body.phone}
      ]
    })  
    .then(result=>{
       if(result){
        if(result.password==body.password){
          const token = createToken({
            phone:result.phone,
            password:result.password
          });
          res.json({
            code:200,
            msg:"登录成功",
            result,
            token
          })
        }else{
          res.json({
            code:401,
            msg:"密码错误",
          })
        }
       }else{
        res.json({
          code:401,
          msg:"账号不存在",
        })
       }
    })
    .catch(err=>{
      console.log(err)
      res.json({
        code:500,
        msg:"服务器异常",
        err
      })
    })
})

// 获取用户信息
router.get('/getuserinfo',(req,res)=>{
  checkToken(req,res,({phone})=>{
     user_model.findOne({
       phone
     })
     .then(result=>{
        res.json({
          code:200,
          msg:"获取用户信息成功",
          result 
        })
     })
     .catch(err=>{
      res.json({
        code:500,
        msg:"服务器异常",
        err
      })
    })
  })
})

// 上传文件
const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, './public/upload')   // 新建upload 
  },
  filename: function (req, file, cb) {
    cb(null, "wh2107_"+new Date().getTime()+"_"+file.originalname); //避免命名冲突 1.jpg = wh2107_12323131312312_1.jpg
  }
})
const upload = multer({ storage: storage }).any()   // 不限文件格式  不限数据 word json 

router.post("/uploadfile",upload,(req,res)=>{
  var files  = req.files;
  var path = files[0].path ;  // 上传后的相对服务器的文件路径 
  checkToken(req,res,({phone})=>{
    res.json({
      code:200,
      msg:"上传成功",
      path
    })
  })
})
router.post("/uploadimg",upload,(req,res)=>{
    var files  = req.files;
    var path = files[0].path ;  // 上传后的相对服务器的文件路径 

    checkToken(req,res,({phone})=>{
       user_model.updateMany({
         phone,
       },{
         $set:{
           avatar:path
         }
       })
       .then(result=>{
          res.json({
            code:200,
            msg:"上传成功",
            result,
            avatar:path
          })
       })
       .catch(err=>{
        res.json({
          code:500,
          msg:"服务器异常",
          err
        })
      })
    })
})

// 修改密码
router.post("/changepass",(req,res)=>{
  var {oldpass,newpass} = req.body;
  checkToken(req,res,({phone})=>{
      user_model.findOne({
        phone,
      })
      .then(data=>{
          if(data.password == oldpass){
              user_model.updateMany({
                phone
              },{
                $set:{
                  password:newpass
                }
              }).then(result=>{
                res.json({
                  code:200,
                  msg:"密码修改成功,请重新登录",
                  result
                })
              })
              
          }else{
            res.json({
              code:401,
              msg:"旧密码不匹配",
            })
          }
      })
      .catch(err=>{
        res.json({
          code:500,
          msg:"服务器异常",
          err
        })
      })
  })
})

// 添加用户
router.post("/adduser",(req,res)=>{
  var body = req.body 
  checkToken(req,res,({phone})=>{
    user_model.findOne({
      phone:body.phone
    })
    .then(data=>{
      if(data){
        res.json({
          code:401,
          msg:"账号已经被注册",
          data
        })
      }else{
        body.time = new Date();
        body.role = body.role    // 注册普通用户
        user_model.insertMany(body)
        .then(result=>{
          res.json({
            code:200,
            msg:"新增用户成功",
            result
          })
        })
      }
    })
    .catch(err=>{
      res.json({
        code:500,
        msg:"服务器异常",
        err
      })
    })
  })
 
})


// 用户列表
router.post("/getuserlist",(req,res)=>{
  var {keyword,role} = req.body; 
  var obj = {}
  if(keyword||role||role==0){
    obj = {
      $or:[
        {
          username:new RegExp(keyword),
        },
        {
          phone:new RegExp(keyword)
        }
      ],
      role:role
    }
  }
  

  checkToken(req,res,({phone})=>{
    user_model.find(obj,{})
    .sort({
      _id:-1
    })
    .then(result=>{
      res.json({
        code:200,
        msg:"请求成功",
        result 
      })
    })
    .catch(err=>{
      res.json({
        code:500,
        msg:"服务器异常",
        err
      })
    })
  })
})


router.post("/deloneuser",(req,res)=>{
  var body = req.body; 
  checkToken(req,res,({phone})=>{
    user_model.remove({
      ...body
    })
    .then(result=>{
      res.json({
        code:200,
        msg:"删除成功",
        result 
      })
    })
    .catch(err=>{
      res.json({
        code:500,
        msg:"服务器异常",
        err
      })
    })
  })
})


router.post("/updateoneuser",(req,res)=>{
  var {_id,role} = req.body; 
  checkToken(req,res,({phone})=>{
    user_model.updateMany({
      _id:_id
    },{
      $set:{
        role:role
      }
    })
    .then(result=>{
      res.json({
        code:200,
        msg:"修改成功",
        result 
      })
    })
    .catch(err=>{
      res.json({
        code:500,
        msg:"服务器异常",
        err
      })
    })
  })
})

// 新增公告
router.post("/annoaddone",(req,res)=>{
  var body = req.body; 
  checkToken(req,res,({phone})=>{
    body.time  = new Date();
    anno_model.insertMany(body)
    .then(result=>{
      res.json({
        code:200,
        msg:"新增成功",
        result 
      })
    })
    .catch(err=>{
      res.json({
        code:500,
        msg:"服务器异常",
        err
      })
    })
  })
})


// 公告列表 
router.post("/getannolist",(req,res)=>{
  var {keyword,role} = req.body; 
  var obj = {}
  // if(keyword||role||role==0){
  //   obj = {
  //     $or:[
  //       {
  //         username:new RegExp(keyword),
  //       },
  //       {
  //         phone:new RegExp(keyword)
  //       }
  //     ],
  //     type:role
  //   }
  // }
  

  checkToken(req,res,({phone})=>{
    anno_model.find(obj,{})
    .sort({
      _id:-1
    })
    .then(result=>{
      res.json({
        code:200,
        msg:"请求成功",
        result 
      })
    })
    .catch(err=>{
      res.json({
        code:500,
        msg:"服务器异常",
        err
      })
    })
  })
})
module.exports = router;